#ifndef SceneNode_h__
#define SceneNode_h__

#include "Vector3d.h"
#include "Quaternion.h"

typedef struct SceneNode
{
	char name[64];
	int id;
	Vector3d position;
	Quaternion orientation;
	struct SceneNode** children;
	int child_count;
} SceneNode;

/* allocate a new SceneNode From values.
 * note: values will be copied, not held.
 * @param char* name - the new node's name.
 * @param unsigned int child_count - number of children. will allocated a new array of SceneNodes pointers (empty).
 * @param Vector3d* position - relative position of the node. 
 * @param Quaternion* orientation - relative orientation of the node.
 * @return the new node as SceneNode*.
 */
SceneNode* SceneNode_FromValues( char* name, int child_count,
								 Vector3d* position, Quaternion* orientation );

/* destroy given scene tree.
 * @param SceneNode* r - root of the scene tree.
 */
void SceneNode_destroy( SceneNode* r );

#endif // SceneNode_h__